﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;

namespace FeiYang
{
    public enum 宠物状态_
    {
        宠物攻击_ = 1,
        宠物休息_,
    }

    public class 宠物_
    {
        public static Rectangle 名称范围 = Rectangle.FromLTRB(1043, 377, 1114, 397);
        public static int 距离 = -85;
        public 宠物_(挂机人物_ 人物)
        {
            this.人物 = 人物;
        }

        public 挂机人物_ 人物 { get; private set; }

        public bool 找到宠物图标(out int 位置)
        {
            位置 = UI_.识别已开启内挂() ? 2 : 1;
            var 范围 = 位置 == 1 ? 名称范围 : Rectangle.FromLTRB(名称范围.Left + 距离, 名称范围.Top, 名称范围.Right + 距离, 名称范围.Bottom);
            图像_.截图(范围, "D:\\0001.bmp");
            var 找到 = 其他_.循环判断(() => 图像_.查找文字(范围, s =>
            {
                人物.输出("识别出: " + s);
                return s.Contains("宠") || s.Contains("物");
            }).X != -1, 6);
            return 找到;
        }

        public void 宠物攻击()
        {
            人物.输出("切换到攻击");
            var 找到 = 找到宠物图标(out var 位置);
            if (!找到 && 人物.职业 != "道士")
            {
                人物.输出("没有宠物");
                return;
            }
            if (位置 == 1)
            {
                键鼠_.左键单击(1077, 358);
                其他_.延迟(其他_.时长_1000);
                键鼠_.左键单击(1058, 300);
                其他_.延迟(其他_.时长_400);
            }
            else
            {
                键鼠_.左键单击(1077 + 距离, 358);
                其他_.延迟(其他_.时长_1000);
                键鼠_.左键单击(1058 + 距离, 300);
                其他_.延迟(其他_.时长_400);
            }
        }
        public void 宠物休息()
        {
            人物.输出("切换到休息");
            var 找到 = 找到宠物图标(out var 位置);
            if (!找到 && 人物.职业 != "道士")
            {
                人物.输出("没有宠物");
                return;
            }
            if (位置 == 1)
            {
                键鼠_.左键单击(1077, 358);
                其他_.延迟(其他_.时长_1000);
                键鼠_.左键单击(1058, 400);
                其他_.延迟(其他_.时长_400);
            }
            else
            {
                键鼠_.左键单击(1077 + 距离, 358);
                其他_.延迟(其他_.时长_1000);
                键鼠_.左键单击(1058 + 距离, 400);
                其他_.延迟(其他_.时长_400);
            }
        }
    }
}
